import platform
from pathlib import Path
import shutil

class ConfigManager:
    def __init__(
            self, app_name: str = "audiotts", 
            config_name: str = "config.yaml"
    ):
        """
        初始化 ConfigManager。

        :param app_name: 应用名称
        :param config_name: 配置文件名
        """
        self.app_name = app_name
        self.config_name = config_name
        self.config_path, self.config_file= self._get_config_path()

    def _get_config_path(self) -> tuple:
        """
        根据操作系统生成配置文件的路径。

        :return: 配置文件的完整路径
        """
        system = platform.system()

        if system == "Windows":
            # Windows: AppData/Local/audiotts/config.yaml
            config_dir = Path.home() / "AppData" / "Local" / self.app_name
        elif system in ["Linux", "Darwin"]:  # Darwin = macOS
            # Linux/macOS: ~/.config/audiotts/config.yaml
            config_dir = Path.home() / ".config" / self.app_name
        else:
            # 其他系统默认使用用户主目录下的 .audiotts 目录
            config_dir = Path.home() / f".{self.app_name}"

        # 确保目录存在
        config_dir.mkdir(parents=True, exist_ok=True)

        return config_dir,config_dir / self.config_name

    def init_default_config(self):
        """
        从当前目录加载默认配置文件并复制到用户主目录的配置路径。
        仅在配置文件不存在时执行复制操作。
        """
        default_config_path = Path(__file__).parent / "default_config.yaml"
        if not default_config_path.exists():
            raise FileNotFoundError(f"未找到默认配置文件：{default_config_path}")

        # 如果配置文件不存在，则复制默认配置文件
        if not self.config_file.exists():
            shutil.copy(default_config_path, self.config_file)
            print(f"首次运行，已复制默认配置文件：{self.config_file}")

        
        

